package com.pactera.miyuangroup.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.context.annotation.Configuration;

/**
 * 公共配置
 *
 * @author Wangwu
 * @create 2018-04-13 上午11:19
 **/
@Data
@Configuration
@ConfigurationProperties(prefix = "common")
public class CommonConfig {

    /**
     * 忽略地址（无需拦截权限）
     */
    private String[] ignoring;

    private Sms sms;

    private OkHttp okHttp;

    /**
     * 货道更新线程数量
     */
    private int vendorPassagewayThreadPool = 20;

    /**
     * 售货机更新线程数量
     */
    private int vendorThreadPool = 20;

    /**
     * 售货机货道初始化路径
     */
    private String excelInitializationPath = "/data";

    /**
     * App token 有效时间
     */
    private long appTokenEffectiveTime = 3600 * 24;

    /**
     * 短信验证
     */
    @Data
    public static class Sms {

        public Sms() {
            this.effectiveTime = 120L;
            this.sign = "【文思海辉】";
        }

        /**
         * 短信验证码有效时间
         * 默认：120秒
         */
        private long effectiveTime;

        /**
         * 短信签名
         * 默认：【文思海辉】
         */
        private String sign;

        /**
         * 短信发送地址
         */
        private String url;

        /**
         * 企业编号
         */
        private String spCode;

        /**
         * 用户名称
         */
        private String loginName;

        /**
         * 用户密码
         */
        private String password;

        /**
         * 登录验证码短信内容
         */
        private String loginMessageContent;

    }

    /**
     * 第三请求配置
     */
    @Data
    public static class OkHttp {

        /**
         * 超时时间 秒
         */
        private long timeout = 30;

        /**
         * 设置在连接失败时是否要重试
         */
        private boolean retryOnConnectionFailure = false;

        /**
         * 请求米源服务器地址
         */
        private String requestServerUrl;

        /**
         * 请求思源服务器地址
         */
        private String requestSiYuanServerUrl;

        /**
         * 商品分类地址
         */
        private String classificationUrl;

        /**
         * 商品地址
         */
        private String goodsUrl;

        /**
         * 组织机构地址
         */
        private String organizationUrl;

        /**
         * 员工地址
         */
        private String userUrl;

        /**
         * 车辆地址
         */
        private String vehicleUrl;

        /**
         * 售货机地址
         */
        private String vendorUrl;

        /**
         * 货道地址
         */
        private String vendorPassagewayUrl;

        /**
         * 货道地址（增量）
         */
        private String vendorPassagewayIncrementUrl;

        /**
         * 售货机货道售卖信息地址
         */
        private String saleUrl;

        /**
         * 售货机销售金额地址
         */
        private String salesAmountUrl;

        /**
         * 补货地址
         */
        private String replenishmentUrl;

        public String getClassificationUrl() {
            return this.requestServerUrl + classificationUrl;
        }

        public String getGoodsUrl() {
            return this.requestServerUrl + goodsUrl;
        }

        public String getOrganizationUrl() {
            return this.requestServerUrl + organizationUrl;
        }

        public String getUserUrl() {
            return this.requestServerUrl + userUrl;
        }

        public String getVehicleUrl() {
            return this.requestServerUrl + vehicleUrl;
        }

        public String getVendorUrl() {
            return this.requestServerUrl + vendorUrl;
        }

        public String getVendorPassagewayUrl() {
            return this.requestServerUrl + vendorPassagewayUrl;
        }

        public String getVendorPassagewayIncrementUrl() {
            return this.requestServerUrl + vendorPassagewayIncrementUrl;
        }

        public String getSaleUrl() {
            return this.requestSiYuanServerUrl + saleUrl;
        }

        public String getSalesAmountUrl() {
            return this.requestSiYuanServerUrl + salesAmountUrl;
        }

        public String getReplenishmentUrl() {
            return this.requestSiYuanServerUrl + replenishmentUrl;
        }
    }
}
